[codex] implement remote connection mode end-to-end#4
Merged
Conversation
Make attached launcher modal auto-resize to fit content instead of using fixed dimensions. Move close button to top-right corner of the window. Prevent launcher from being resizable in both modes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Shrink standalone launcher from 1440x900 to 560x620 to match content - Sync chooser card selection from persisted chooserMode on open - Switch saved connections from double-click to single-click activation - Add delete confirmation modal with Cancel default focus and danger button - Add verification loading state (disabled button, empty-field guard) - Add HTTP redirect hint for unreachable remotes on plain HTTP - Show contextual error buttons (local vs remote failure paths) - Add keyboard support: Arrow keys, Enter, Escape, focus trapping in modals - Add ARIA roles and focus-visible outlines for chooser cards and connections - Auto-focus first interactive element on view transitions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the card-based mode picker with a two-tab interface: - Local tab: hero layout with Launch button and auto-start checkbox - Remote tab: saved connections list with single-click connect, Edit buttons, empty state, and Add Remote Connection action Additional changes: - Animate launcher window height transitions (180ms ease-out cubic) - Enable dynamic height for standalone mode (not just attached sheets) - Remove requirements box from remote form (verification enforces these) - Update all back-navigation: remote form returns to Remote tab, error view routes to correct tab, saved connections returns to chooser - Keyboard: Arrow Left/Right switches tabs, Up/Down navigates remote list, Enter activates focused connection - Gitignore the chooser-variations mockup file Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The resize reporting was accidentally restricted to attached-only mode during recent refactoring, breaking content-driven sizing for the standalone loading screen. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Freshly created launcher windows stay hidden until the renderer reports its actual content height, then show at the correct size. Eliminates the visible flash from starting at the large initial dimensions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use setContentSize instead of setBounds so the viewport matches the reported content height exactly, and add a small buffer for macOS sheet frame chrome. Also re-measure after two animation frames to catch late layout shifts on first open. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements the remote connection mode feature end-to-end while preserving the existing embedded local mode.
Local vs remote mode support
local_embeddedvsremote_existingPreflight and security model
/api/healthand/api/auth/get-sessionauthReady=truelocal_trustedremotesUI implementation from the mockup
Validation
pnpm test:connectionsnew Function(...)against the generated launcher HTMLNotes